package com.fy.fyai.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fy.fyai.common.config.JsonbTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * AI聊天会话表（含完整聊天记录，单条记录存储整个会话的元信息+历史消息）
 *
 * @TableName ai_chat_session
 */
@TableName(value = "ai_chat_conversation", autoResultMap = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AiChatConversation implements Serializable {
    /**
     * 会话唯一标识（自增int，SERIAL已包含INT类型）
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 会话ID（与消息表关联，用于查询完整会话记录）
     */
    @TableField(value = "conversation_id")
    private String conversationId;

    /**
     * 会话名称（用户可自定义，如"产品需求讨论"）
     */
    @TableField(value = "conversation_name")
    private String conversationName;

    /**
     * 关联用户ID（外键关联企业用户表，int类型）
     */
    @TableField(value = "user_id")
    private Integer userId;

    /**
     * 会话状态（1-活跃，2-归档，3-逻辑删除）
     */
    @TableField(value = "status")
    private Integer status;

    /**
     * 最后一条消息时间（用于排序和活跃会话展示）
     */
    @TableField(value = "last_message_time")
    private Date lastMessageTime;

    /**
     * 完整聊天记录（jsonb数组，按时间顺序存储消息）
     */
    @TableField(value = "message_content", typeHandler = JsonbTypeHandler.class)
    private String messageContent;

    /**
     * 会话创建时间（带时区）
     */
    @TableField(value = "create_time")
    private Date createTime;

    /**
     * 会话更新时间（自动更新）
     */
    @TableField(value = "update_time")
    private Date updateTime;

    /**
     * 对话消息次数统计（用于展示会话活跃度）
     */
    @TableField(value = "message_count")
    private Integer messageCount;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
